﻿#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//struct S
//{
//	int i;
//	char c;
//};
//union Un
//{
//	int i;
//	char c;
//};
//int main()
//{
//	printf("%zu\n", sizeof(union Un));
//	union Un u;
//	printf("%p\n", &u);
//	printf("%p\n", &(u.c));
//	printf("%p\n", &(u.i));
//	return 0;
//}
//int main()
//{
//	printf("%zu\n", sizeof(struct S));
//	printf("%zu\n", sizeof(union Un));
//	return 0;
//}
//#include<stdio.h>
//int func()
//{
//	union un
//	{
//		int i;
//		char c;
//	}u;
//	u.i = 1;
//	return u.c;
//}
//int main()
//{
//	int ret = func();
//	if (ret == 1)
//		printf("小端");
//	else
//		printf("大端");
//}
//struct gift_list
//{
//	int stock_number;//库存量 
//	double price; //定价 
//	int item_type;//商品类型 
//
//	union {
//		struct
//		{
//			char title[20];//书名 
//			char author[20];//作者 
//			int num_pages;//⻚数 
//		}book;
//		struct
//		{
//			char design[30];//设计 
//		}mug;
//		struct
//		{
//			char design[30];//设计 
//			int colors;//颜⾊ 
//			int sizes;//尺⼨ 
//		}shirt;
//	}item;
//	
//};
//enum Day//星期
//{
//	Mon,
//	Tues,
//	Wed,
//	Thur,
//	Fri,
//	Sat,
//	Sun
//};
//enum Sex//性别
//{
//	MALE,
//	FEMALE,
//	SECRET
//}；
//enum Color//颜⾊
//{
//	RED,
//	GREEN,
//	BLUE
//};
//#include<stdio.h>
//#include<stdlib.h>
//int main()
//{
//	//假设申请20个字节的空间，存放5个整数
//	int* p = (int*)malloc(5 * sizeof(int));
//	//判断返回值
//	if (p == NULL)//开辟失败
//	{
//		perror("malloc");//打印错误信息
//		return 1;
//	}
//	//开辟成功了，使用这块空间
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		*(p + i) = i + 1;
//	}
//	for(i=0;i<5;i++)
//	{
//		printf("%d ", p[i]);
//	}
//	return 0;
//}
//#include<stdio.h>
//#include<stdlib.h>
//int main()
//{
//	//申请一块内存空间，用来存放1~5
//	int* p = (int*)malloc(5 * sizeof(int));
//	if (p == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//	//使用内存空间
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		p[i] = 1 + i;
//	}
//	//继续存放6~10
//	//空间不够了，需要增容
//	int* p2 = realloc(p, 10 * sizeof(int));
//	if (p2 == NULL)
//	{
//		perror("realloc");
//		free(p);
//		p = NULL;
//		return 1;
//	}
//	p = p2;
//	//接下来可以继续使p来维护新的空间
//	for (i = 5; i < 10; i++)
//	{
//		p[i] = i + 1;
//	}
//	free(p);
//	p = NULL;
//	return 0;
//}
//#include<stdio.h>
//#include<stdlib.h>
////realloc函数也可以直接用来申请空间
//int main()
//{
//	//穿空指针代表我们用来开辟空间
//	int* p = (int*)realloc(NULL, 40);
//	return 0;
//}
#include<stdio.h>
#include<stdlib.h>
int* test()
{
	int* p = (int*)malloc(10 * sizeof(int));
	if (p = NULL)
	{
		perror("malloc");
		return 1;
	}
	//...
	free(p);

	return p;
}
int main()
{
	int* ptr = test();
	free(ptr);//二次释放了
	ptr = NULL;

	return 0;
}